Just a quick update:
Over the past weeks I have been working on a new Jabber client written in Javascript. It will be a successor to JSJaC in the Soashable project. The API is designed with Smack in mind, but deviates in that it uses DOM ubiquitously rather than building XML strings. However it is still designed such that one could implement a packet and simply override getNode() to create a new XML node on the fly.
It is mostly unit tested, and lack of testability was a core reason for finally leaving JSJaC. The approach is to create a DummyXmppConnection, a subclass of XmppConnection that doesn't actually make Ajax requests, and test output queue (expected vs actual) and inject responses to test for events.
I've also added a data plan to my cell phone service. My device is a T-Mobile MDA connecting via EDGE, and I get speeds of 100±30 kbps. From limited test runs, it is a bit slower than the iPhone. I installed Opera Mobile and it seems to handle Ajax pretty welll; most tests for XMPP client pass, where they don't even run for IE mobile.
I've got a lot of new ideas, and you can see where this is going :) I have more for you later.